
export function request(config: any) {
    // 确保header对象存在
    if (!config.header) {
        config.header = {};
    }
    
    // 统一追加认证头: 优先使用drone_token，兼容若依(Bearer token) 与原有的 officialAccount_token
    const droneToken = uni.getStorageSync('drone_token');
    const ruoyiToken = uni.getStorageSync('token') || uni.getStorageSync('Authorization');
    const oaToken = uni.getStorageSync("officialAccount_token");
    let auth = '';
    
    if (droneToken) {
        auth = droneToken.startsWith('Bearer ') ? droneToken : `Bearer ${droneToken}`;
    } else if (ruoyiToken) {
        auth = ruoyiToken.startsWith('Bearer ') ? ruoyiToken : `Bearer ${ruoyiToken}`;
    } else if (oaToken) {
        auth = oaToken;
    }
    
    // 只有在没有Authorization头时才添加
    if (auth && !config.header['Authorization']) {
        config.header['Authorization'] = auth;
    }
    let {
        url,
        method = "GET",//默认GET请求
        data,
        header,
        responseType,
    } = config
    /*根据查询场景设置加载动画*/
    if (config?.loadTime) {
        uni.showLoading({
            mask: false,
            title: '加载中...',
            className: 'custom-loading'
        });
    }
    // 添加详细的调试信息
        console.log('=== 请求调试信息 ===');
        console.log('请求URL:', url);
        console.log('完整请求URL:', `${window.location.origin}${url}`);
        console.log('请求方法:', method);
        console.log('请求数据:', data);
        console.log('请求头:', header);
        console.log('==================');
    
    return new Promise((resolve, reject) => {
        uni.request({
            url,
            method,
            data,
            header,
            responseType,
            success: (res: any) => {
                console.log('=== 响应调试信息 ===');
                console.log('响应状态码:', res.statusCode);
                console.log('完整响应对象:', res);
                console.log('响应数据:', res.data);
                console.log('响应数据类型:', typeof res.data);
                console.log('响应数据长度:', res.data ? JSON.stringify(res.data).length : 'null');
                console.log('==================');
                if (config?.loadTime) {
                    uni.hideLoading();
                }
                
                if (res.data.code == 200) {
                    resolve(res);
                } else if (res.data.code == 401) {
                    uni.showToast({
                        title: res.data.msg || '登录过期',
                        icon: 'none',
                    })
                    uni.navigateTo({
                        url: `/pages/logon/logon`,
                    });
                    reject(res);
                } else if (res.data.code == 901) {
                    uni.showToast({
                        title: res.data.msg || '请求失败',
                        icon: 'none',
                    })
                    reject(res);
                } else {
                    reject(res);
                }
            },
            fail: (err: any) => {
                if (config?.loadTime) {
                    uni.hideLoading();
                }
                console.error('请求失败:', err);
                console.error('请求URL:', url);
                console.error('请求方法:', method);
                console.error('请求数据:', data);
                console.error('错误状态码:', err.statusCode);
                console.error('错误信息:', err.errMsg);
                uni.showToast({
                    title: `请求失败: ${err.statusCode || '未知错误'}`,
                    icon: 'none',
                })
                reject(err)
            }
        })
    })
}
